package com.bird.设计模式.结构型.代理模式.静态代理;

import com.bird.设计模式.结构型.代理模式.IOrderService;
import com.bird.设计模式.结构型.代理模式.Order;
import com.bird.设计模式.结构型.代理模式.OrderServiceImpl;
import com.bird.设计模式.结构型.代理模式.db.DataSourceContextHolder;

/**
 * @data 2022/3/16 15:16
 * @author: bird
 * @description: 静态代理 订单服务代理类
 */
public class OrderServiceStaticProxy {

    private IOrderService iOrderService;// 对这个类进行代理

    // 对这个方法进行代理
    public int saveOrder(Order order) {
        beforeMethod();
        iOrderService = new OrderServiceImpl();
        int userId = order.getUserId();
        int dbRouter = userId % 2;
        System.out.println("静态代理分配到【db】" + dbRouter + " 处理数据");
        DataSourceContextHolder.setDBType("db"+String.valueOf(dbRouter));
        afterMethod();
        return iOrderService.saveOrder(order);
    }


    // 之前的
    private void beforeMethod() {
        System.out.println("静态代理 before code");
    }

    // 之后的
    private void afterMethod() {
        System.out.println("静态代理 after code");
    }
}
